#ifndef QS60TELEPHONY_P_H
#define QS60TELEPHONY_P_H

// INCLUDES
#include "qs60telephony.h"
#include "ccalldialer.h"
#include "ccallanswerer.h"
#include "ccallterminator.h"
#include "ctelephonymonitor.h"
#include "IMEIApp.h"
#ifdef RECENT_CALLS
#include "crecentcalls.h"
#endif
// CLASS DECLARATION
class QS60TelephonyPrivate: public CBase
                          , public MDialObserver
                          , public MTelephonyStatusObserver
                          , public MAnswerObserver
                          , public MTerminatorObserver

{
public:
    QS60TelephonyPrivate(QS60Telephony* telephony);
    ~QS60TelephonyPrivate();
    
    void call(const QString& phoneNumber);
    void answerIncomingCall();
    void terminateCall();
    void rejectCall();
    bool startMonitoringLine();
    void stopMonitoringLine();
    QString IMEI();

#ifdef RECENT_CALLS
    void recentCalls();
#endif
    QS60Telephony::Error error();

    void showOnTop();
    void showNormal();
    void toBackground();

private: //From MDialObserver
    void CallDialedL(TInt aError);

private: //From MAnswerObserver
    void CallAnsweredL(TInt aError);

private: //From MTerminatorObserver
    void CallTerminatedL(TInt aError);
    void CallRejectedL(TInt aError);

private: // From MTelephonyStatusObserver
    void TelephonyStatusChangedL(CTelephony::TCallStatus aStatus, const TDesC& aNumber);
    void ErrorOccuredL(TInt aError);
    
private:
    QS60Telephony* q;
    CTelephony*        iTelephony;
    CCallDialer*       iCallDialer;
    CCallAnswerer*     iCallAnswerer;
    CCallTerminator*   iCallTerminator;
    CTelephonyMonitor* iTelephonyMonitor;    

#ifdef RECENT_CALLS
    CRecentCalls*      iRecentCalls;
#endif
    int iError;
};

#endif /*QS60TELEPHONY_P_H*/

// End of file
